package com.youdianstar.app.entity

import com.youdianstar.app.common.util.StrUtil


/**
 * File: WalletValueEx
 * Author: Administrator Create: 2025/1/20 0020 14:40
 * Changes (from 2025/1/20 0020)
 * --------------------------------------------------
 * description: 钱包/支付 数据
 * ---------------------------------------------------
 *
 */

/**
 * 钱包数据
 */
data class WalletInfo(
    val cardList: List<CardEntity>?,
    //需缴纳的押金金额
    val deposit: Double,
    //用户缴纳的押金金额
    val depositAmount: Double,
    //用户是否是否免押金:，true:是 false: 否
    val isDeposit: Boolean,
    //预授权金额
    val preAuthAmount: Double,
    //预付款金额
    val prepaymentAmount: Double,
    //需缴纳的预付款金额
    val requirePrepaymentAmount: Double,
)

/**卡Banner 数据*/
class CardBanner(var type: Int, var card: CardEntity? = null) {
    //banner type  1:加卡 2:卡数据
}

/**卡解绑 接口结果*/
data class CardUnbindRes(val result :Int, val orderNo :String?, val order: OrderInfo?) {
    //result- 0:成功 1：有租借中的订单 2：自己有未支付的订单 3：有调查中的订单4：子账号有未支付订单 5:子账号有调查中的订单 6:子账号有租借中的订单 7:已开通亲情圈
}

/**
 * 支付流水记录
 */
data class PaymentRecord(
    //流水表id
    val id: Int,
    //流水号
    val transferNo:String?=null,
    /**
     * 流水类型：1-租借 2-租金退款 3-会员 4-会员退款 5-押金 6-押金退款 7-罚金 8-罚金退款 9-添加卡 10-添加卡退款 11-优惠券 12-优惠券退款 13-购买 14-购买退款 15-置换 16-置换退
     * --原需求: 流水分状态显示->有两条记录 : 租借/租金退款 ,金额+/-
     * --调整需求: 流水只有两条,UI图标标识状态
     */
    val type: Int,
    //交易时间
    val createTime: Long,
    //交易金额
    val amount: Double,
    //税率
    val tax:Double = 0.0,
    //税金
    val taxAmount:Double = 0.0,
    //支付方式: -1:钱包 0-已绑定卡 1-新卡支付 2-亲情圈 3-Apple 4-google 5-paypal 6-weChat 7-aliPay
    val paymentMethod: Int,
    //支付状态：0-未支付 1-已支付 2-免费 3-部分退款 4-全部退款
    val paymentState:Int=0,
    //银行卡后四位
    val bankNo: String?=null,
    //是否已退款： true-是 false-否
    val refund: Boolean=false,
    //退款金额
    val refundAmount:Double = 0.0,
    //是否发送过收据
    val sentReceipt:Boolean,


    /*订单相关*/
    //订单号
    val orderNo:String?=null,
    //平台优惠金额
    val plateCouponAmount:Double?=null,
    //使用优惠券
//    val couponInfo:CouponRes?=null,
    //订单实际金额
    val realAmount:Double?=null,
    //订单金额
    val orderAmount:Double?=null,
    //租借网点名称
    val rentBranchName:String?=null,
    //租借机柜编号
    val rentCabinetNo:String?=null,
    //充电宝编号
    val pbNo:String?=null,
    //计费规则
    val billing:BillingPlan?=null,
    //计费时长(秒)
    val billDuration:Long
){
    fun transferNoTx():String{
        return if (StrUtil.isEmpty(transferNo)) "--" else transferNo!!
    }

    fun orderNoTx():String{
        return if (StrUtil.isEmpty(orderNo)) "--" else orderNo!!
    }
}

/**支付方式 接口结果*/
data class PaymentMethodResult(
    val apple: Boolean,
    val card: Boolean,
    val family: Boolean,
    val google: Boolean,
    val paypal: Boolean,
    //支付卡列表
    val cardList : List<CardEntity>?,
    //是否有优惠券 ，true：有 false：无
    val haveCoupon: Boolean
)

/**支付方式 适配*/
data class MethodBean(
    //类型  -1:钱包 0：已绑定卡支付，1：输卡号支付 2：亲情圈支付 3：Apple 4:google 5:paypal
    val type: Int,
    val channel:String ="stripe",
    val icon: Int,
    val content: String,
    val des: String?=null,
    val card: CardEntity? = null,
    var isEnable: Boolean = true,
    //适配器标记 选中
    var isCheck: Boolean = false
)


/**收据请求*/
data class ReceiptReq(
    //流水id(流水列表ID)
    val id:Int?=null,
    //流水号
    val orderNo:String?=null,

    val receiptEmail:String
)


